package com.ys.extend.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 时间类型、格式转换工具类
 * @author wdj
 *
 */
public class TimeUtil {	
	
	/**
	 * 日期时间转换为 为 对应的格式
	 * @param date 时间
	 * @param format 格式 ,输入格式如：yyyy-MM-dd HH:mm:ss
	 * @return 对应格式的时间
	 */
	public static Date getFormatDate(String date, String format) {
		try {
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
			return simpleDateFormat.parse(date);			
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}		
	}

	/**
	 * 日期时间转换为 对应的格式 
	 * @param date 时间
	 * @param format 格式 ,输入格式如：yyyy-MM-dd HH:mm:ss
	 * @return 对应格式的时间
	 */
	public static String getFormatDate(Date date, String format) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
		return simpleDateFormat.format(date);			
	}
		
	/**
	 * 获取当前时间
	 * <br/>格式是： yyyy-MM-dd HH:mm:ss
	 * @return 当前时间
	 */
	public static Date getNowTime() {
		DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String nowStr = format.format(new Date());
		try {
			return format.parse(nowStr);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}	
	
    /**
     * 系统当前时间(精确到毫秒)+UUID,作为一个唯一的编号
     * @return  以yyyyMMddHHmmssSSS为格式的当前系统时间
     */
	public static String getUniqueNum(){
		Date date=new Date();
		DateFormat df=new SimpleDateFormat("yyyyMMddHHmmssSSS");		
		String orderNum = df.format(date) + UUID.randomUUID().toString().hashCode();
		return orderNum;
	}	
	
	 /**
	  * 两个日期字符串比较
	  * @param DATE1
	  * @param DATE2
	  * @return
	  */
	 public static int compare_date(String DATE1, String DATE2) {
	       
		
	        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	        try {
	            Date dt1 = df.parse(DATE1);
	            Date dt2 = df.parse(DATE2);
	            if (dt1.getTime() > dt2.getTime()) {
	                //System.out.println("dt1 在dt2前");
	                return 1;
	            } else if (dt1.getTime() < dt2.getTime()) {
	                //System.out.println("dt1在dt2后");
	                return -1;
	            } else {
	                return 0;
	            }
	        } catch (Exception exception) {
	            exception.printStackTrace();
	        }
	        return 0;
	    }
	 
	 
}
